window = global;
r = {
    "data" : {
        "comm": {
            "cv": 4747474,
            "ct": 24,
            "format": "json",
            "inCharset": "utf-8",
            "outCharset": "utf-8",
            "notice": 0,
            "platform": "yqq.json",
            "needNewCode": 1,
            "uin": "1152921504989481079",
            "g_tk_new_20200303": 332457543,
            "g_tk": 332457543
        },
        "req_1": {
            "module": "music.musichallSong.PlayLyricInfo",
            "method": "GetPlayLyricInfo",
            "param": {
                "songMID": "002jPCO71gsZCb",
                "songID": 4933133
            }
        },
        "req_2": {
            "method": "GetCommentCount",
            "module": "music.globalComment.GlobalCommentRead",
            "param": {
                "request_list": [
                    {
                        "biz_type": 1,
                        "biz_id": "4933133",
                        "biz_sub_type": 0
                    }
                ]
            }
        },
        "req_3": {
            "module": "music.musichallAlbum.AlbumInfoServer",
            "method": "GetAlbumDetail",
            "param": {
                "albumMid": "003YjWkn1Tua0h"
            }
        },
        "req_4": {
            "module": "music.vkey.GetEVkey",
            "method": "GetUrl",
            "param": {
                "guid": "8773544404",
                "songmid": [
                    "002jPCO71gsZCb"
                ],
                "songtype": [
                    0
                ],
                "uin": "1152921504989481079",
                "loginflag": 1,
                "platform": "20",
                "xcdn": 1,
                "filename": [
                    "RS02063bGD8B1uSXka.mp3"
                ]
            }
        }
    }
}
r.data = JSON.stringify(r.data);
console.log(r.data);
function P() {
    var e = 601,
    t = [],
    c = void 0,
    u = [
    null,
    1732584193,
    4023233417,
    2562383102,
    3285377520,
    false,
    true,
    2147483648,
    4294967295,
    4294967296,
    1518500249,
    1859775393,
    1894007588
    ],
    o = window;
    var n = function(e) {
        var t = i(String(e), 3)
          , n = r(t);
        return 0 === n && "-" == t.charAt(0) ? -0 : n
    };
    h = function() {
            var e = 0;
            return 0 === (e = (e = d() ? l("wxuin") : l("uin")) || l("p_uin")).indexOf("o") && (e = e.substring(1, e.length)),
            /^\d+$/.test(e) ? e.length < 14 && (e = parseInt(e, 10)) : e = 0,
            e
        };
    for (var l, f, p = [o, u, t, this, arguments, P, n, 0], d = void 0, h = e, g = []; ; )
        try {
            for (; ; )
                switch (n[++h]) {
                case 0:
                    p[n[++h]] = new p[n[++h]](p[n[++h]]);
                    break;
                case 1:
                    return p[n[++h]];
                case 2:
                    for (l = [],
                    f = n[++h]; f > 0; f--)
                        l.push(p[n[++h]]);
                    p[n[++h]] = a(h + n[++h], l, o, u, c);
                    try {
                        Object.defineProperty(p[n[h - 1]], "length", {
                            value: n[++h],
                            configurable: !0,
                            writable: !1,
                            enumerable: !1
                        })
                    } catch (m) {}
                    break;
                case 3:
                    p[n[++h]] = p[n[++h]] < p[n[++h]];
                    break;
                case 4:
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]] = p[n[++h]][p[n[++h]]];
                    break;
                case 5:
                    p[n[++h]] = p[n[++h]] >= n[++h];
                    break;
                case 6:
                    p[n[++h]] = p[n[++h]] >> n[++h],
                    p[n[++h]] = p[n[++h]][p[n[++h]]];
                    break;
                case 7:
                    p[n[++h]] = p[n[++h]] < n[++h];
                    break;
                case 8:
                    p[n[++h]] = p[n[++h]].call(d);
                    break;
                case 9:
                    p[n[++h]] = "",
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]] = n[++h];
                    break;
                case 10:
                    p[n[++h]] = p[n[++h]] | n[++h];
                    break;
                case 11:
                    p[n[++h]] = p[n[++h]] & n[++h],
                    p[n[++h]] = p[n[++h]][p[n[++h]]];
                    break;
                case 12:
                    p[n[++h]] = {};
                    break;
                case 13:
                    p[n[++h]] = p[n[++h]] | p[n[++h]],
                    p[n[++h]][p[n[++h]]] = p[n[++h]],
                    h += p[n[++h]] ? n[++h] : n[(++h,
                    ++h)];
                    break;
                case 14:
                    p[n[++h]] = d;
                    break;
                case 15:
                    p[n[++h]] = n[++h],
                    p[n[++h]] = p[n[++h]][n[++h]],
                    p[n[++h]] = n[++h];
                    break;
                case 16:
                    p[n[++h]] = !0;
                    break;
                case 17:
                    p[n[++h]] = p[n[++h]] === p[n[++h]];
                    break;
                case 18:
                    p[n[++h]] = p[n[++h]] / p[n[++h]];
                    break;
                case 19:
                    p[n[++h]][p[n[++h]]] = p[n[++h]],
                    p[n[++h]] = "",
                    p[n[++h]] += String.fromCharCode(n[++h]);
                    break;
                case 20:
                    p[n[++h]][n[++h]] = p[n[++h]],
                    p[n[++h]][n[++h]] = p[n[++h]],
                    p[n[++h]][n[++h]] = p[n[++h]];
                    break;
                case 21:
                    p[n[++h]] = p[n[++h]] * p[n[++h]];
                    break;
                case 22:
                    p[n[++h]] = ++p[n[++h]],
                    p[n[++h]] = p[n[++h]];
                    break;
                case 23:
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]] = p[n[++h]][p[n[++h]]],
                    p[n[++h]] = p[n[++h]];
                    break;
                case 24:
                    p[n[++h]] = p[n[++h]] << n[++h];
                    break;
                case 25:
                    p[n[++h]] = Y(p[n[++h]]);
                    break;
                case 26:
                    p[n[++h]] = p[n[++h]] | p[n[++h]];
                    break;
                case 27:
                    p[n[++h]] = n[++h];
                    break;
                case 28:
                    p[n[++h]] = p[n[++h]][n[++h]];
                    break;
                case 29:
                    p[n[++h]] = n[++h],
                    p[n[++h]][n[++h]] = p[n[++h]],
                    p[n[++h]] = n[++h];
                    break;
                case 30:
                    p[n[++h]] = p[n[++h]].call(d, p[n[++h]], p[n[++h]]);
                    break;
                case 31:
                    p[n[++h]] = n[++h],
                    p[n[++h]] = n[++h],
                    p[n[++h]] = n[++h];
                    break;
                case 32:
                    p[n[++h]] = n[++h],
                    p[n[++h]][p[n[++h]]] = p[n[++h]];
                    break;
                case 33:
                    p[n[++h]] = p[n[++h]] === n[++h];
                    break;
                case 34:
                    p[n[++h]] = p[n[++h]] + n[++h];
                    break;
                case 35:
                    p[n[++h]] += String.fromCharCode(n[++h]);
                    break;
                case 36:
                    p[n[++h]] = "",
                    p[n[++h]] += String.fromCharCode(n[++h]);
                    break;
                case 37:
                    p[n[++h]] = p[n[++h]][n[++h]],
                    p[n[++h]] = p[n[++h]][n[++h]],
                    p[n[++h]] = p[n[++h]][n[++h]];
                    break;
                case 38:
                    p[n[++h]] = "",
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]] += String.fromCharCode(n[++h]);
                    break;
                case 39:
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]] = p[n[++h]] === p[n[++h]],
                    h += p[n[++h]] ? n[++h] : n[(++h,
                    ++h)];
                    break;
                case 40:
                    p[n[++h]] = p[n[++h]] > p[n[++h]];
                    break;
                case 41:
                    p[n[++h]] = p[n[++h]] - p[n[++h]];
                    break;
                case 42:
                    p[n[++h]] = p[n[++h]] << p[n[++h]];
                    break;
                case 43:
                    p[n[++h]] = p[n[++h]] & p[n[++h]];
                    break;
                case 44:
                    p[n[++h]] = p[n[++h]] & n[++h];
                    break;
                case 45:
                    p[n[++h]] = -p[n[++h]];
                    break;
                case 46:
                    for (l = [],
                    f = n[++h]; f > 0; f--)
                        l.push(p[n[++h]]);
                    p[n[++h]] = i(h + n[++h], l, o, u, c);
                    try {
                        Object.defineProperty(p[n[h - 1]], "length", {
                            value: n[++h],
                            configurable: !0,
                            writable: !1,
                            enumerable: !1
                        })
                    } catch (v) {}
                    break;
                case 47:
                    h += p[n[++h]] ? n[++h] : n[(++h,
                    ++h)];
                    break;
                case 48:
                    p[n[++h]][n[++h]] = p[n[++h]];
                    break;
                case 49:
                    p[n[++h]] = ~p[n[++h]];
                    break;
                case 50:
                    p[n[++h]] = p[n[++h]].call(p[n[++h]]);
                    break;
                case 51:
                    p[n[++h]] = p[n[++h]] ^ p[n[++h]];
                    break;
                case 52:
                    p[n[++h]] = ++p[n[++h]];
                    break;
                case 53:
                    p[n[++h]] = !1;
                    break;
                case 54:
                    p[n[++h]] = p[n[++h]] >>> n[++h];
                    break;
                case 55:
                    p[n[++h]][n[++h]] = p[n[++h]],
                    p[n[++h]] = n[++h],
                    p[n[++h]][n[++h]] = p[n[++h]];
                    break;
                case 56:
                    p[n[++h]] = Array(n[++h]);
                    break;
                case 57:
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]][n[++h]] = p[n[++h]];
                    break;
                case 58:
                    p[n[++h]] = p[n[++h]] % p[n[++h]];
                    break;
                case 59:
                    p[n[++h]] = p[n[++h]][p[n[++h]]],
                    p[n[++h]] = p[n[++h]][n[++h]];
                    break;
                case 60:
                    p[n[++h]] = p[n[++h]][n[++h]],
                    p[n[++h]] = n[++h];
                    break;
                case 61:
                    p[n[++h]] = p[n[++h]] - n[++h];
                    break;
                case 62:
                    p[n[++h]] = p[n[++h]] + p[n[++h]];
                    break;
                case 63:
                    p[n[++h]] = !p[n[++h]];
                    break;
                case 64:
                    p[n[++h]][p[n[++h]]] = p[n[++h]];
                    break;
                case 65:
                    for (p[n[++h]] += String.fromCharCode(n[++h]),
                    l = [],
                    f = n[++h]; f > 0; f--)
                        l.push(p[n[++h]]);
                    p[n[++h]] = i(h + n[++h], l, o, u, c);
                    try {
                        Object.defineProperty(p[n[h - 1]], "length", {
                            value: n[++h],
                            configurable: !0,
                            writable: !1,
                            enumerable: !1
                        })
                    } catch (A) {}
                    p[n[++h]][p[n[++h]]] = p[n[++h]];
                    break;
                case 66:
                    p[n[++h]] = p[n[++h]] - 0;
                    break;
                case 67:
                    p[n[++h]] = p[n[++h]].call(p[n[++h]], p[n[++h]]);
                    break;
                case 68:
                    p[n[++h]] = p[n[++h]][n[++h]],
                    p[n[++h]] = p[n[++h]],
                    p[n[++h]] = p[n[++h]] - 0;
                    break;
                case 69:
                    p[n[++h]] = p[n[++h]][p[n[++h]]],
                    p[n[++h]] = p[n[++h]] + p[n[++h]];
                    break;
                case 70:
                    p[n[++h]] = n[++h] + p[n[++h]];
                    break;
                case 71:
                    p[n[++h]] = p[n[++h]] << p[n[++h]],
                    p[n[++h]] = p[n[++h]] | p[n[++h]],
                    p[n[++h]][p[n[++h]]] = p[n[++h]];
                    break;
                case 72:
                    p[n[++h]] = p[n[++h]].call(p[n[++h]], p[n[++h]], p[n[++h]]);
                    break;
                case 73:
                    p[n[++h]] = p[n[++h]] >> n[++h];
                    break;
                case 74:
                    p[n[++h]][p[n[++h]]] = p[n[++h]],
                    p[n[++h]][p[n[++h]]] = p[n[++h]],
                    p[n[++h]][p[n[++h]]] = p[n[++h]];
                    break;
                case 75:
                    p[n[++h]] = n[++h],
                    p[n[++h]][n[++h]] = p[n[++h]],
                    h += p[n[++h]] ? n[++h] : n[(++h,
                    ++h)];
                    break;
                case 76:
                    p[n[++h]] = p[n[++h]].call(d, p[n[++h]]);
                    break;
                case 77:
                    p[n[++h]] = p[n[++h]];
                    break;
                case 78:
                    p[n[++h]] = p[n[++h]][p[n[++h]]];
                    break;
                case 79:
                    p[n[++h]] = p[n[++h]][n[++h]],
                    p[n[++h]] = p[n[++h]] >> n[++h],
                    p[n[++h]] = p[n[++h]] & n[++h];
                    break;
                case 80:
                    p[n[++h]] = "";
                    break;
                case 81:
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]] += String.fromCharCode(n[++h]);
                    break;
                case 82:
                    p[n[++h]] += String.fromCharCode(n[++h]),
                    p[n[++h]] = p[n[++h]][p[n[++h]]],
                    h += p[n[++h]] ? n[++h] : n[(++h,
                    ++h)]
                }
        } catch (y) {
            if (g.length > 0 && (r = []),
            r.push(h),
            0 === g.length)
                throw c ? c(y, p, r) : y;
            h = g.pop(),
            r.pop()
        }
}
function get_data(r){
    res = P(r.data)
    console.log(res)
}
get_data(r)